package com.nifostasky.pattern.producer;

import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

/**
 * # 简单模式:
 *      只有一个生产者（P）一个队列（红色块）和 一个消费者(C)
 * 应用场景：
 *      可以实现对应用程序的解耦，并且可以实现对业务的异步处理。事实上这是mq最基本的功能。
 *      简单模式实际上是使用的交换机默认为直连交换机
 *
 * # 工作模式:
 *      消费者之间默认是轮询;
 *      一个生产者对应多个消费者。多个消费者功能消费一个队列（负载均衡）。
 *      每个消息只能被其中的一个消费者消费。
 *      应用场景：对于 任务过重或任务较多情况使用工作队列可以提高任务处理的速度。
 */
@Component
public class SimplePattern {


    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void send() {
        String context = "helloMQ " + System.currentTimeMillis();
        rabbitTemplate.convertAndSend("helloMQ", context);
    }
}
